#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// 判断一个数是否为素数的函数
bool is_prime(int number) {
    if (number <= 1) return false;
    if (number == 2) return true;
    if (number % 2 == 0) return false;
    
    for (int i = 3; i * i <= number; i += 2) {
        if (number % i == 0) return false;
    }
    
    return true;
}

int main() {
    int a, b;
    int count = 0;  // 用于统计当前行已输出的素数个数
    
    // 输入提示
    printf("请输入范围 [a, b] (b最大为100000):\n");
    printf("a = ");
    if (scanf("%d", &a) != 1) {
        printf("输入错误: 请输入有效的整数。\n");
        return 1;
    }
    
    printf("b = ");
    if (scanf("%d", &b) != 1 || b > 100000) {
        printf("输入错误: b必须是不超过100000的有效整数。\n");
        return 1;
    }
    
    // 检查输入范围的有效性
    if (a > b) {
        printf("输入错误: a不能大于b。\n");
        return 1;
    }
    
    // 输出范围内的素数
    printf("\n%d 到 %d 之间的素数有:\n", a, b);
    for (int i = a; i <= b; i++) {
        if (is_prime(i)) {
            printf("%8d", i);
            count++;
            
            // 每行显示6个素数
            if (count % 6 == 0) {
                printf("\n");
            }
        }
    }
    
    // 如果最后一行没有满6个，也换行
    if (count % 6 != 0) {
        printf("\n");
    }
    
    printf("\n总共找到 %d 个素数。\n", count);
    
    return 0;
}
